package com.cetcs.kmga.dataManager.global;

/**
 * 前端与后端对应的码值类
 * 使用枚举类型保证码值与名称在程序中值统一起来
 *
 * @author xutao
 * @version V1.0 创建时间：2017-10-10 10:45
 *          Copyright 2017 by CETC
 */
public enum ResLogType {


    MySQLFWRZ("001", "探针审计-MySQL访问日志", "SDATA_AUDIT_DB_LOG"),

    HbaseFWRZ("009", "探针审计-Hbase访问日志", "SDATA_AUDIT_DB_LOG"),

    /**
     * 探针日志Solr
     */
    SolrFWRZ("010", "探针审计-Solr访问日志", "SDATA_AUDIT_DB_LOG"),

    /**
     * 探针FTP
     */
    FTPCJRZ("016", "探针审计-FTP采集日志", "SDATA_AUDIT_DB_LOG"),


    QTSJRZ("999", "其他使用日志", ""),


    /**
     * 探针Mongodb
     */
    MongoDBFWRZ("017", "探针审计-MongoDB访问日志", "SDATA_AUDIT_DB_LOG"),

    /**
     * 脱敏日志 静态脱敏HBhase
     */
    JTTMHbase("00009", "脱敏审计日志-Hbase静态脱敏", "SDATA_DESE_TASK_DB_LOG"),

    /**
     * 静态脱敏日志Solr
     */
    JTTMSolr("00010", "脱敏审计日志-Solr静态脱敏", "SDATA_DESE_TASK_DB_LOG"),

    /**
     * 静态脱敏 MySQL
     */
    JTTMMySql("00001", "脱敏审计日志-MySql静态脱敏", "SDATA_DESE_TASK_DB_LOG"),

    /**
     * 文件静态脱敏
     * 00009 数据库静态脱敏HBase
     * 00010 数据库静态脱敏SOLR
     * 00001 数据库静态脱敏Mysql
     * 01001 数据库动态脱敏Mysql
     * 02999 文件静态脱敏
     * 03999 文件动态脱敏
     * 99999 不能识别的类型
     */
    DTTMMySql("01001", "脱敏审计日志-Mysql动态脱敏", "SDATA_DESE_TASK_DB_LOG"),


    WJJTTM("02999", "脱敏审计日志-文件静态脱敏", "SDATA_DESE_TASK_DB_LOG"),

    WJDTTM("03999", "脱敏审计日志-文件动态脱敏", "SDATA_DESE_TASK_DB_LOG"),

    YWCZRZ("", "运维操作日志", "SDATA_MAINT_BEHAV_LOG"),

    JGPTRZ("", "监管平台审计日志", "SDATA_SUPERVISE_USER_OPER_LOG"),

    TZSBRZ("", "探针设备审计日志", "SDATA_AUDIT_USER_OPER_LOG"),

    TMSBRZ("", "脱敏设备审计日志", "SDATA_DESE_USER_OPER_LOG"),

    YWSBRZ("", "运维设备审计日志", "SDATA_MAINT_USER_OPER_LOG"),

    FXSJ("", "风险事件日志", "");

    private String value;

    private String title;

    /**
     * 表名
     */
    private String tbName;

    ResLogType(String value) {

        this.value = value;
    }

    ResLogType(String value, String title) {

        this.value = value;
        this.title = title;
    }

    ResLogType(String value, String title, String tbName) {

        this.value = value;
        this.title = title;
        this.tbName = tbName;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTbName() {
        return tbName;
    }

    public void setTbName(String tbName) {
        this.tbName = tbName;
    }

    /**
     * 根据类型名字得出码值
     *
     * @param pageType 页面类型
     * @return
     */
    public static String getCode(String pageType) {
        return ResLogType.valueOf(pageType).getValue( );
    }

    /**
     * 获取码表的表名
     *
     * @param pageType
     * @return
     */
    public static String getTableName(String pageType) {
        return ResLogType.valueOf(pageType).getTbName( );
    }

    public static String getPageName(String pageType) {
        return ResLogType.valueOf(pageType).getTitle( );
    }

    /**
     * 根据日志类型的值获取类型
     *
     * @param value 编码值
     * @return
     */
    public static ResLogType getResLogType(String value) {
        ResLogType resLogType = ResLogType.QTSJRZ;
        for (ResLogType logType : ResLogType.values( )) {
            if (value.equals(logType.getValue( ))) {
                resLogType = logType;
                break;
            }
        }
        return resLogType;
    }
}
